﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace XConductor.Domain.Seedwork.Media
{
    public enum AudioFormats
    {
        Unknown,

        /// <summary>
        ///     A noncompressed audio data format with one frame per packet.
        /// </summary>
        LinearPCM,

        /// <summary>
        ///     An AC-3 codec.
        /// </summary>
        AC3,

        /// <summary>
        ///     An AC-3 codec that provides data packaged for transport over an IEC 60958 compliant digital audio interface.
        /// </summary>
        AC3_60958,

        /// <summary>
        ///     Apple’s implementation of the IMA 4:1 ADPCM codec.
        /// </summary>
        AppleIMA4,

        /// <summary>
        ///     An MPEG-4 AAC codec. The flags field contains the MPEG-4 audio object type constant listed in “MPEG-4 Audio Object Type Constants” indicating the specific kind of data.
        /// </summary>
        MPEG4AAC,

        /// <summary>
        ///     An MPEG-4 CELP codec. 
        ///     The flags field contains the MPEG-4 audio object type constant listed in “MPEG-4 Audio Object Type Constants” indicating the specific kind of data.
        /// </summary>
        MPEG4CELP,

        /// <summary>
        ///     A key that specifies an MPEG-4 HVXC codec. 
        ///     The flags field contains the MPEG-4 audio object type constant listed in “MPEG-4 Audio Object Type Constants” indicating the specific kind of data.
        /// </summary>
        MPEG4HVXC,

        /// <summary>
        ///     An MPEG-4 TwinVQ codec. The flags field contains the MPEG-4 audio object type constant listed in “MPEG-4 Audio Object Type Constants” indicating the specific kind of data.
        /// </summary>
        MPEG4TwinVQ,

        /// <summary>
        ///     MACE 3:1.
        /// </summary>
        MACE3,

        /// <summary>
        ///     MACE 6:1.
        /// </summary>
        MACE6,
        
        /// <summary>
        ///     μLaw 2:1.
        /// </summary>
        ULaw,

        /// <summary>
        ///     aLaw 2:1.
        /// </summary>
        ALaw,

        /// <summary>
        ///     QDesign music.
        /// </summary>
        QDesign,

        /// <summary>
        ///     QDesign2 music.
        /// </summary>
        QDesign2,

        /// <summary>
        ///     QUALCOMM PureVoice.
        /// </summary>
        QUALCOMM,

        /// <summary>
        ///     MPEG-1/2, Layer 1 audio.
        /// </summary>
        MPEGLayer1,

        /// <summary>
        ///     MPEG-1/2, Layer 2 audio.
        /// </summary>
        MPEGLayer2,

        /// <summary>
        ///     MPEG-1/2, Layer 3 audio.
        /// </summary>
        MPEGLayer3,

        /// <summary>
        ///     A stream of AudioTimeStamp structures.
        /// </summary>
        TimeCode,

        /// <summary>
        ///     MIDI Stream.
        /// </summary>
        MIDIStream,

        /// <summary>
        ///    A "side-chain" of Float32 data that can be fed or generated by an audio unit and that is used to send a high density of parameter value control information. 
        ///    An audio unit typically runs a parameter value stream at either the sample rate of the audio unit’s audio data, 
        ///    or some integer quotient of this (say a half or a third of the sample rate of the audio).
        /// </summary>
        ParameterValueStream,

        /// <summary>
        ///     Apple Lossless.
        /// </summary>
        AppleLossless,

        /// <summary>
        ///     MPEG-4 High Efficiency AAC audio object.
        /// </summary>
        MPEG4AAC_HE,

        /// <summary>
        ///     MPEG-4 AAC Low Delay audio object.
        /// </summary>
        MPEG4AAC_LD,

        /// <summary>
        ///     MPEG-4 AAC Enhanced Low Delay audio object.
        /// </summary>
        MPEG4AAC_ELD,

        /// <summary>
        ///     MPEG-4 AAC Enhanced Low Delay audio object with SBR (spectral band replication) extension layer. 
        /// </summary>
        MPEG4AAC_ELD_SBR,

        /// <summary>
        ///     MPEG-4 High Efficiency AAC Version 2 audio object. 
        /// </summary>
        MPEG4AAC_HE_V2,

        /// <summary>
        ///     MPEG-4 Spatial Audio audio object. 
        /// </summary>
        MPEG4AAC_Spatial,

        /// <summary>
        ///     The AMR (Adaptive Multi-Rate) narrow band speech codec. 
        /// </summary>
        AMR,

        /// <summary>
        ///     The codec used for Audible, Inc. audio books.
        /// </summary>
        Audible,

        /// <summary>
        ///     The iLBC (internet Low Bitrate Codec) narrow band speech codec
        /// </summary>
        iLBC,

        /// <summary>
        ///     DVI/Intel IMA ADPCM - ACM code 17.
        /// </summary>
        DVIIntelIMA,

        /// <summary>
        ///     Microsoft GSM 6.10 - ACM code 49.
        /// </summary>
        MicrosoftGSM,

        /// <summary>
        ///     The format defined by the AES3-2003 standard. Adopted into MXF and MPEG-2 containers and SDTI transport streams with SMPTE specs 302M-2002 and 331M-2000.
        /// </summary>
        AES3,
    }
}
